import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'

import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),

    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      // 也就是使用 import * from 'vue'，识别导入的是 'vue'，就会自动导入
      imports: ['vue'],
      dts: 'src/types/declaration-files/auto-imports.d.ts'
    }),

    AutoImport({
      resolvers: [ElementPlusResolver()],
      dts: 'src/types/declaration-files/auto-imports.d.ts'
    }),

    Components({
      resolvers: [ElementPlusResolver()],
      // 该项自动导入全局声明，会自动生成ts类型文件
      dts: 'src/types/declaration-files/components.d.ts'
    }),

    Components({
      // 配置下载安装的图标自动导入
      resolvers: [
        IconsResolver({
          // prefix: 'i', // 图标识别自动导入的前缀，默认值是 'i'
          enabledCollections: ['ep'] // 能使用的集合名称，可以根据官网 https://icones.js.org/collection/ep 查看
        })
      ],
      // 该项自动导入全局声明，会自动生成ts类型文件
      dts: 'src/types/declaration-files/components.d.ts'
    }),
    // 开启自动从网络下载安装图标
    Icons({
      autoInstall: true
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})
